
#pragma once

/*
#include <vector>
#include <memory>
#include <stdint.h>
#include "FlameMath.h"
#include "UniqueString.h"

namespace FlameEngine
{
	class Material
	{
	public:
		void SetParam(std::shared_ptr<UniqueString> name,float value);
		void SetParam(std::shared_ptr<UniqueString> name,const DirectX::XMFLOAT2& value);
		void SetParam(std::shared_ptr<UniqueString> name,const DirectX::XMFLOAT3& value);
		void SetParam(std::shared_ptr<UniqueString> name,const DirectX::XMFLOAT4& value);
		void SetParam(std::shared_ptr<UniqueString> name,const float* value,int32_t dataLength);
		
		void GetParam(const UniqueString* name,float& oValue) const;
		void GetParam(const UniqueString* name,DirectX::XMFLOAT2& oValue) const;
		void GetParam(const UniqueString* name,DirectX::XMFLOAT3& oValue) const;
		void GetParam(const UniqueString* name,DirectX::XMFLOAT4& oValue) const;
		void GetParam(const UniqueString* name,float* oValue,int32_t count) const;

		bool HasParam(const UniqueString* const name);

	private:
		struct ParamInfo
		{
			std::shared_ptr<UniqueString> m_Name;
			uint16_t m_paramIndex;
			uint16_t m_paramLength;

			ParamInfo(std::shared_ptr<UniqueString> name,uint16_t index,uint16_t length)
				:m_Name(name),m_paramIndex(index),m_paramLength(length)
			{
			}
		};

		std::vector<float> m_paramData;
		std::vector<ParamInfo> m_paramInfos;
	};
}
*/